<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<!-- ================= form with 'automatic' 2-column table layout ================= -->
	<xsl:param name="form-border" select="'0'"/>
	
	<xsl:template match="xform[@style='twocolumn-omit-table']">
		<xsl:apply-templates mode="twocolumn"/>
	</xsl:template>
	
	<xsl:template match="xform[@style='twocolumn']">
		<table border="{$form-border}" cellspacing="0" cellpadding="2" id="{$renderId}">
			<xsl:apply-templates select="@width"/>
			<xsl:apply-templates mode="twocolumn"/>
		</table>
	</xsl:template>
	
	<!--
	wie "twocolumn", jedoch werden keine globalen stylesheet parameter verwendet
	(das wuerde zu mehrfachen verwendung der renderId fuehren)
	-->
	<xsl:template match="xform[@style='nested']">
		<table border="1" cellspacing="0" cellpadding="2" id="{@id}">
			<xsl:apply-templates select="@width"/>
			<xsl:apply-templates mode="twocolumn"/>
		</table>
	</xsl:template>
	
	<!-- ignore hidden elements -->
	<xsl:template mode="twocolumn" match="*[@hidden='true']"/>
	
	<xsl:template mode="twocolumn" match="label|textField|password|listBox1|listBoxN|checkBox|radioButton|fileUpload">
			<xsl:call-template name="show-error"/>
			<tr>
				<!--td class="xform-label" align="right"-->
				<td align="right">
					<xsl:value-of select="@label"/>:
				</td>
				<td class="xform-input" align="left">
					<xsl:apply-templates select="."/>
				</td>
			</tr>
	</xsl:template>
	
	<!-- textarea takes the whole space -->
	<xsl:template mode="twocolumn" match="textArea">
		<xsl:call-template name="show-error"/>
		<tr>
			<td colspan="2" class="xform-both">
				<xsl:if test="@label">
					<xsl:value-of select="@label"/>
					<br/>
				</xsl:if>
				<xsl:apply-templates select="."/>
			</td>
		</tr>
	</xsl:template>
	
	<!-- displays a row with buttons -->
	<xsl:template mode="twocolumn" match="buttons">
		<tr>
			<td colspan="2" align="right">
				<div align="right">
					<xsl:apply-templates/>
				</div>
			</td>
		</tr>
	</xsl:template>
	
	<!-- title text only -->
	<xsl:template mode="twocolumn" match="title">
		<tr>
			<th colspan="2" class="xform-title">
				<!-- support both <title>blah</title> and <title value="blah"/> -->
				<xsl:value-of select="@value"/>
				<xsl:apply-templates/>
			</th>
		</tr>
	</xsl:template>
	
	<!-- subtitle text only -->
	<xsl:template mode="twocolumn" match="subtitle">
		<tr>
			<th colspan="2" class="xform-subtitle">
				<!-- support both <title>blah</title> and <title value="blah"/> -->
				<xsl:value-of select="@value"/>
				<xsl:apply-templates/>
			</th>
		</tr>
	</xsl:template>
	
	<!-- title with close button(s) -->
	<xsl:template mode="twocolumn" match="title[imgButton]">
		<tr>
			<th colspan="2" class="xform-title">
				<table border="0" cellspacing="0" cellpadding="0" width="100%">
					<tr>
						<th align="left" class="xform-title">
							<xsl:value-of select="@value"/>
						</th>
						<td align="right" class="xform-close-button">
							<xsl:apply-templates/>
						</td>
					</tr>
				</table>
			</th>
		</tr>
	</xsl:template>
	
	<!-- displays text in two columns -->
	<xsl:template mode="twocolumn" match="text">
		<xsl:call-template name="show-error"/>
		<tr>
			<td colspan="2" class="xform-both">
				<!-- support both <text>blah</text> and <text value="blah"/> -->
				<xsl:value-of select="@value"/>
				<xsl:apply-templates/>
			</td>
		</tr>
	</xsl:template>
	
	<!-- escapes to manual layout after checking the @error attribute -->
	<xsl:template mode="twocolumn" match="manual">
		<xsl:call-template name="show-error"/>
			<xsl:apply-templates/>
		</xsl:template>
		<!-- ignored if already in manual mode -->
	<xsl:template match="manual"/>
	
	<!-- inverse of manual -->
	<xsl:template match="twocolumn">
		<xsl:call-template name="show-error"/>
			<xsl:apply-templates mode="twocolumn"/>
		</xsl:template>
		<!-- ignored if already in twocolumn mode -->
	<xsl:template mode="twocolumn" match="twocolumn"/>
	
	<!-- block with multiple columns -->
	<xsl:template mode="twocolumn" match="multicolumn">
		<xsl:call-template name="show-error"/>
		<tr>
			<td colspan="2">
				<table>
					<tr>
						<xsl:apply-templates mode="multicolumn" select="column"/>
					</tr>
				</table>
			</td>
		</tr>
	</xsl:template>
	
	<!-- single column inside a multicolumn element -->
	<xsl:template mode="multicolumn" match="column">
		<td valign="top">
			<table>
				<xsl:apply-templates mode="twocolumn"/>
			</table>
		</td>
	</xsl:template>
	
	<!-- displays a table row with error message -->
	<xsl:template name="show-error">
		<xsl:if test="@error">
			<tr>
				<td colspan="2" class="xform-error">
					<xsl:value-of select="@error"/>
				</td>
			</tr>
		</xsl:if>
	</xsl:template>
	
	<xsl:template mode="twocolumn" match="errorElement">
		<xsl:call-template name="show-error"/>
	</xsl:template>
	
	<!-- =============== form without automatic layout ===================== -->
	<xsl:template match="xform[@style='manual']">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="error-list">
		<ul>
			<xsl:for-each select="//*[@error]">
				<li>
					<xsl:value-of select="@error"/>
				</li>
			</xsl:for-each>
		</ul>
	</xsl:template>
	
	<xsl:template match="error-message">
		<xsl:value-of select="//@error"/>
	</xsl:template>
	
</xsl:stylesheet>